import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

public class UdpEchoServer {
    private DatagramSocket socket = null ;

    public UdpEchoServer (int port) throws SocketException {
        this.socket = new DatagramSocket(port);
    }
    public void start() throws IOException {
        System.out.println("服务器启动");
         while (true){
             // 1.接收请求
             DatagramPacket requestPacket = new DatagramPacket(new byte[4096] , 4096) ;
             socket.receive(requestPacket);

             String request = new String(requestPacket.getData() , 0 , requestPacket.getLength()) ;

             // 2. 处理请求 ;
             String response = process(request);

             // 3. 返回响应 ;
             DatagramPacket responsePacket = new DatagramPacket(response.getBytes( ) , response.getBytes().length,
                      requestPacket.getSocketAddress());
             socket.send(responsePacket);

             //4. 打印日志
             System.out.println("请求方: [ "+requestPacket.getAddress().toString()+", port: "+
                     requestPacket.getPort()+" ] ");
             System.out.println(response);



         }


    }

    private String process(String request) {
        return  " 请求: "+request + " 响应: ok" ;
    }

    public static void main(String[] args) throws IOException {
        UdpEchoServer udpEchoServer = new UdpEchoServer(6060);
        udpEchoServer.start();
    }

}
